/** 
 * 工厂模式 
 * 目的： 方便我们大量创建对象
 * 应用场景： 当某一个对象需要经常创建的时候
 * 
 */


/**
 * 工厂模式的基本结构
 * 工厂模式就是写一个方法，只需要调用这个方法，就能拿到你要的对象
 */

function Factory(type) {
    switch (type) {
        case 'type1':
            return new Type1()
        case 'type2':
            return new Type2()
        case 'type3':
            return new Type3()
    }
}


/**
 * 示例：
 * 需求： 项目有一个弹窗需求，弹窗有多种，他们之间存在内容和颜色上的差异
 * 初级版
 */

//信息框
function infoPop() { }
//确认框
function confirmPop() { }
//取消框 
function cancelPop() { }
//创建3个消息弹框 3个确认 3个取消 ，分别不同颜色
function pop(type, content, color) {

    switch (type) {
        case 'infoPop':
            return new infoPop(content, color)
        case 'confirmPop':
            return new confirmPop(content, color)
        case 'cancelPop':
            return new cancelPop(content, color)
    }
}
var arr = [{ type: 'infoPop', word: 'hello', color: 'red' }]


/**
 * 升级版1
 */
function pop(type, content, color) {
    if (this instanceof pop) {
        this[type](content, color)
    } else {
        return new pop(type, content, color)
    }
}
pop.prototype.infoPop = function (content, color) { }
pop.prototype.confirmPop = function (content, color) { }
pop.prototype.cancelPop = function (content, color) { }


